import apiClient from './config'

/**
 * 回收站点相关 API
 */
export const stationsAPI = {
  /**
   * 获取站点列表（分页）
   * @param {Object} params - 查询参数
   * @param {number} params.page - 页码
   * @param {number} params.pageSize - 每页大小
   * @param {string} params.status - 站点状态过滤
   * @param {string} params.keyword - 搜索关键词
   * @param {number} params.managerId - 管理员ID过滤
   * @returns {Promise} 站点列表
   */
  getStations(params = {}) {
    return apiClient.get('/stations', { params })
  },

  /**
   * 根据ID获取站点详情
   * @param {number} stationId - 站点ID
   * @returns {Promise} 站点详情
   */
  getStationById(stationId) {
    return apiClient.get(`/stations/${stationId}`)
  },

  /**
   * 创建站点
   * @param {Object} stationData - 站点数据
   * @param {string} stationData.name - 站点名称
   * @param {string} stationData.address - 站点地址
   * @param {number} stationData.latitude - 纬度
   * @param {number} stationData.longitude - 经度
   * @param {string} stationData.contactPhone - 联系电话
   * @param {number} stationData.capacity - 站点容量
   * @param {number} stationData.managerId - 管理员ID
   * @returns {Promise} 创建结果
   */
  createStation(stationData) {
    return apiClient.post('/stations', stationData)
  },

  /**
   * 更新站点信息
   * @param {number} stationId - 站点ID
   * @param {Object} stationData - 更新的站点数据
   * @returns {Promise} 更新结果
   */
  updateStation(stationId, stationData) {
    return apiClient.put(`/stations/${stationId}`, stationData)
  },

  /**
   * 删除站点
   * @param {number} stationId - 站点ID
   * @returns {Promise} 删除结果
   */
  deleteStation(stationId) {
    return apiClient.delete(`/stations/${stationId}`)
  },

  /**
   * 批量删除站点
   * @param {number[]} stationIds - 站点ID列表
   * @returns {Promise} 删除结果
   */
  batchDeleteStations(stationIds) {
    return apiClient.delete('/stations/batch', { data: { stationIds } })
  },

  /**
   * 更新站点状态
   * @param {number} stationId - 站点ID
   * @param {string} status - 状态（active/busy/closed）
   * @returns {Promise} 操作结果
   */
  updateStationStatus(stationId, status) {
    return apiClient.patch(`/stations/${stationId}/status`, { status })
  },

  /**
   * 获取站点库存信息
   * @param {number} stationId - 站点ID
   * @param {Object} params - 查询参数（page, pageSize, category, keyword等）
   * @returns {Promise} 库存信息
   */
  getStationInventory(stationId, params = {}) {
    return apiClient.get(`/stations/${stationId}/inventory`, { params })
  },

  /**
   * 更新站点库存
   * @param {number} stationId - 站点ID
   * @param {Object} inventoryData - 库存数据
   * @param {number} inventoryData.itemId - 物品ID
   * @param {number} inventoryData.quantity - 数量
   * @returns {Promise} 更新结果
   */
  updateStationInventory(stationId, inventoryData) {
    return apiClient.put(`/stations/${stationId}/inventory`, inventoryData)
  },

  /**
   * 删除站点库存
   * @param {number} stationId - 站点ID
   * @param {number} itemId - 物品ID
   * @returns {Promise} 删除结果
   */
  deleteStationInventory(stationId, itemId) {
    return apiClient.delete(`/stations/${stationId}/inventory/${itemId}`)
  },
 
  /**
   * 获取库存变动历史
   * @param {number} stationId - 站点ID
   * @param {number} itemId - 物品ID
   * @returns {Promise} 历史记录列表
   */
  getInventoryHistory(stationId, itemId) {
    return apiClient.get(`/stations/${stationId}/inventory/${itemId}/history`)
  },

  /**
   * 获取站点负载统计
   * @param {number} stationId - 站点ID
   * @returns {Promise} 负载统计
   */
  getStationLoadStats(stationId) {
    return apiClient.get(`/stations/${stationId}/load-stats`)
  },

  /**
   * 获取所有站点统计信息
   * @returns {Promise} 统计信息
   */
  getStationsStats() {
    return apiClient.get('/stations/stats')
  },

  /**
   * 根据地理位置搜索附近站点
   * @param {Object} location - 位置信息
   * @param {number} location.latitude - 纬度
   * @param {number} location.longitude - 经度
   * @param {number} location.radius - 搜索半径（千米）
   * @returns {Promise} 附近站点列表
   */
  searchNearbyStations(location) {
    return apiClient.get('/stations/nearby', { params: location })
  },

  /**
   * 获取可用站点列表（用于订单分配）
   * @returns {Promise} 可用站点列表
   */
  getAvailableStations() {
    return apiClient.get('/stations/available')
  },

  /**
   * 分配管理员到站点
   * @param {number} stationId - 站点ID
   * @param {number} managerId - 管理员ID
   * @returns {Promise} 分配结果
   */
  assignManager(stationId, managerId) {
    return apiClient.patch(`/stations/${stationId}/manager`, { managerId })
  },

  /**
   * 取消站点管理员分配
   * @param {number} stationId - 站点ID
   * @returns {Promise} 操作结果
   */
  unassignManager(stationId) {
    return apiClient.delete(`/stations/${stationId}/manager`)
  }
}
